package 链表;

public class No203移除链表元素 {

    /**
     * 删除链表中等于给定值 val 的所有节点。
     * 示例:
     * 输入: 1->2->6->3->4->5->6, val = 6
     * 输出: 1->2->3->4->5
     */

    public static ListNode removeElements(ListNode head, int val) {

        ListNode listNode=new ListNode();
        listNode.next=head;
        ListNode cur=listNode;

        while (cur.next!=null){
            if(cur.next.val==val){
                ListNode delNode=cur.next;
                //此节点的下一个指向(下一节点的下一个)
                cur.next=cur.next.next;
                //不用下面这一句了,因为检验的是cur.next,而上面那句已经把cur.next给移动了
                delNode.next=null;//要删除的节点的下一个节点为null(目的与链表脱离)
//                cur=cur.next==null?null:cur.next.next;
            }else{
                cur=cur.next;
            }
        }

        return listNode.next;
    }

    public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,5,6,7,7,8,9};
        ListNode listNode = ListNode.createListNode(arr);
        ListNode result = removeElements(listNode, 3);
        ListNode.printListNode(result);
    }

}
